Mat-vector
今天看ORB-SLAM3的代码中发现存储Mat的vector中存在一些坑/妙用
简单来讲就是以下这段代码,如果外部改变image,vector里的Mat也会被相应地改变
std::vector<cv::Mat> image_list;
cv::Mat image = cv::imread("../test.png");
image_list.push_back(image);
如果你不知道这个是浅拷贝,然后外部又不小心改变了image,那就是个坑
但是如果已经知道了这个规则,就可以直接操作外部变量进而来修改vector中的元素
特别是vector里的Mat只是外部image的一部分时,会更方便简单
平常使用为了保险起见,放入vector前clone一下就好
image_list.push_back(image.clone());